#ifndef SORT_H_
#define SORT_H_

namespace lxj
{

// 交换一个数组中的两个数
inline void swap(int* arr, int i, int j)
{
    int temp = arr[i];
    arr[i]   = arr[j];
    arr[j]   = temp;
}
// 选择排序
inline void selectionSort(int* arr, int len)
{
    for (int i = 0; i < len; i++) {
        int min = arr[i];
        for (int j = i + 1; j < len; j++) {
            if (arr[j] < min) {
                lxj::swap(arr, i, j);
            }
        }
    }
}

// 冒泡排序
inline void bubbleSort(int* arr, int len)
{
    for (int i = len - 1; i >= 0; i--) {
        for (int j = 0; j < i; j++) {
            if (arr[j] > arr[j + 1]) {
                lxj::swap(arr, j, j + 1);
            }
        }
    }
}

// 插入排序
inline void insertSort(int* arr, int len)
{
    for (int i = 0; i < len - 1; i++) {
        for (int j = i + 1; j > 0; j--) {
            if (arr[j] < arr[j - 1]) {
                lxj::swap(arr, j, j - 1);
            }
        }
    }
}
}   // namespace lxj


#endif